package com.ucm.plg.analizadores.sintactico;

import java.util.ArrayList;

public class TipoSintactico {

	
	/*
	 * Como hemos seguido unas notaciones distintas, es importante aclarar que es cada campo de los nuestros en cuanto a lo que viene en los apuntes
	 * APUNTES -> NUESTRA PRACTICA
	 * clase -> categoriaLexica, aqui no hace falta
	 * Id -> identificador
	 * nombreTipo -> Esto es parte de la expresion de tipos Por ejemplo, con  <t:array, tipo seria array
	 */
		
	
	private String identificador;
	private String nombreTipo;
	private int tamano;
	private String nElems;
	private String tBase;
	private Simbolo tRef;
	private String dirMem;
	ArrayList<Campo> listaCampos = new ArrayList<Campo>();
	public ArrayList<Campo> getListaCampos() {
		return listaCampos;
	}

	public void setListaCampos(ArrayList<Campo> listaCampos) {
		this.listaCampos = listaCampos;
	}

	private Simbolo simbolo;
	private Campo campo;

	public TipoSintactico(){}
	
	public TipoSintactico(Simbolo simbolo){
		nombreTipo = simbolo.getTipo();
		identificador = simbolo.getLexema();
		tamano = Integer.parseInt(simbolo.getTamano());
		nElems = simbolo.getnElems();
		tBase = simbolo.getTbase();
		tRef = simbolo.gettRef();
		dirMem = simbolo.getDirMemoria();
		this.simbolo = simbolo;
	}
	
	public Simbolo gettRef() {
		return tRef;
	}
	public void settRef(Simbolo tRef) {
		this.tRef = tRef;
	}
	public String getIdentificador() {
		return identificador;
	}
	public void setIdentificador(String identificador) {
		this.identificador = identificador;
	}
	public int getTamano() {
		return tamano;
	}
	public void setTamano(int tamano) {
		this.tamano = tamano;
	}
	public String getnElems() {
		return nElems;
	}
	public void setnElems(String nElems) {
		this.nElems = nElems;
	}
	
	public String getDirMem() {
		return dirMem;
	}
	public void setDirMem(String dirMem) {
		this.dirMem = dirMem;
	}
	
	public String gettBase() {
		return tBase;
	}
	public void settBase(String tBase) {
		this.tBase = tBase;
	}

	public String getNombreTipo() {
		return nombreTipo;
	}

	public void setNombreTipo(String nombreTipo) {
		this.nombreTipo = nombreTipo;
	}

	public Simbolo getSimbolo() {
		return simbolo;
	}

	public void setSimbolo(Simbolo simbolo) {
		this.simbolo = simbolo;
	}

	public Campo getCampo() {
		return campo;
	}

	public void setCampo(Campo campo) {
		this.campo = campo;
	}
	
	
}
